perm filename SUBRZ.F4[SCR,LCS]1 blob
sn#223777 filedate 1976-07-07 generic text, type T, neo UTF8
00300 SUBROUTINE SUBR
00400 COMMON /INS/ INST(27),BG(60)
00500 COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
00600 C INUM=INST# IPAR=PARAM#
00700 C BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
00800 C IF IREST IS <0, THAT NOTE WILL BE A REST.
00900 C INST=INST. NAME, BG=INSTS' BEGIN TIMES.
01000 C NOTE #S IN SUBROUTINE: (1-84) C4=37 FS4=43 C5=49 ETC.
01100 C F1=86 F15=100 (NO F16!)
01200
01300 DIMENSION JINST(4,4),A(4),L(4)
01400 C WILL ACCEPT 4 INST NAMES FOR EACH OF 4 INSTS( 1,2,3,4)
01500 IF(IPAR.EQ.30)GO TO 30
01600 C DOES NAME CHANGE ON P30 CALL
01700
01800 C CALL SUBROUTINE FROM P12. P3 CAN BE NOTES OR NUMBS.
01900 X=P(3)
02000 IF(PL(3).EQ.1)GO TO 1
02100 X=IFIX(X)
02200 C FOR RAND NOTES TO PRINT OUT FREQS.
02300 X=30.8677*2**(X/12)
02400 C X=FREQ. IN HZ. BASED ON NOTE # IN P3.
02500 PL(3)=1.
02600 C THIS CAUSES FREQ. NUM TO PRINT INSTEAD OF LITERAL CHARACTERS.
02700 1 P(3)=X*2**(P(11)/P(12))
02800 C P12=# OF DIVISIONS OF THE OCTAVE. P11=CHROMATIC STEP IN THAT DIV.
02900 RETURN
03000
03100 30 IF(CNT(INUM).NE.1)GO TO 31
03200 C A, L AND INST NAMES ARE INITIIALIZED ON FIRST NOTE OF EACH INST.
03300 A(INUM)=0
03400 L(INUM)=1
03500 JINST(1,INUM)=INST(INUM)
03600 J=P(30)
03700 N=2
03800 C J GETS INST # OF FIRST DUMMY, N IS COUNTER
03900 DO 32 K=J,J+2
04000 C USE 3 DUMMIES, NO MORE, NO LESS!!!
04100 JINST(N,INUM)=INST(K)
04200 32 N=N+1
04300 C PUT INST. NUM. OF 1ST DUMMY INTO P30. PUT DUMMIES AT END OF INST LIST.
04400 C USE NEG. DURS. FOR DUMMIES.
04500
04600 31 IF(A(INUM).GT.P(1))L(INUM)=L(INUM)+1
04700 C L CHANGES VALUE IF THERE IS A TIME OVERLAP
04800
04900 IF(L(INUM).GT.4)L(INUM)=1
05000 C RESET L IF IT GETS TOO BIG
05100
05200 A(INUM)=P(1)+P(2)*DF
05300 C STORES END POINT IN TIME OF CURRENT NOTE.
05400
05500 INST(INUM)=JINST(L(INUM),INUM)
05600 C THIS SET INST NAME FOR EVERY NOTE.
05700
05800 END
05900
06000